package controllers;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.util.Iterator;
import javax.swing.table.DefaultTableModel;
import models.OPDept;
import models.Order;
import models.Product;
import models.Warehouse;
import views.AdminFrame2;
import views.LoginFrame;
import views.UserFrame;
public class SerializableManager {
public void serializaWarehouse(Warehouse wh) {
try {
FileOutputStream fileOut = new FileOutputStream("stock.ser");
ObjectOutputStream out = new ObjectOutputStream(fileOut);
out.writeObject(wh);
out.close();
fileOut.close();
System.out.printf("Serialized data is saved in stock.ser");
} catch (IOException i) {
i.printStackTrace();
}
}
public Warehouse deserializeWharehouse() {
Warehouse e = null;
try {
FileInputStream fileIn = new FileInputStream("stock.ser");
ObjectInputStream in = new ObjectInputStream(fileIn);
e = (Warehouse) in.readObject();
in.close();
fileIn.close();
} catch (IOException i) {
i.printStackTrace();
} catch (ClassNotFoundException c) {
System.out.println("Warehouse class not found");
c.printStackTrace();
}
Iterator<Product> it = e.getProductsInAscendingOrder();
while (it.hasNext()) {
Product p = it.next();
Object[] row = { p.getID(), p.getName(), p.getQuantity() };
if (LoginFrame.getUserButton().isSelected()) {
((DefaultTableModel) UserFrame.getTable().getModel()).addRow(row);
} else {
((DefaultTableModel) AdminFrame2.getTable().getModel()).addRow(row);
}
}
return e;
}
public void serializaOrders(OPDept ord) {
try {
FileOutputStream fileOut = new FileOutputStream("orders.ser");
ObjectOutputStream out = new ObjectOutputStream(fileOut);
out.writeObject(ord);
out.close();
fileOut.close();
System.out.printf("Serialized data is saved in orders.ser");
} catch (IOException i) {
i.printStackTrace();
}
}
public OPDept deserializeOrders() {
OPDept e = null;
try {
FileInputStream fileIn = new FileInputStream("orders.ser");
ObjectInputStream in = new ObjectInputStream(fileIn);
e = (OPDept) in.readObject();
in.close();
fileIn.close();
} catch (IOException i) {
i.printStackTrace();
} catch (ClassNotFoundException c) {
System.out.println("OPDept class not found");
c.printStackTrace();
}
Iterator<Order> it = e.getOrdersInAscendingOrder();
while (it.hasNext()) {
Order o = it.next();
Object[] row = { o.getID() + 1, o.getCustomer().getName(), o.getProduct().getName(), o.getQuantity(),
"Computed" };
if (LoginFrame.getUserButton().isSelected()) {
if (o.getCustomer().getName().equals(LoginFrame.getUserName())) {
((DefaultTableModel) UserFrame.getOrderTable().getModel()).addRow(row);
}
} else {
((DefaultTableModel) AdminFrame2.getTableOrder().getModel()).addRow(row);
}
}
return e;
}
}